Переопределение операций () и []
Переопределение операции () позволяет использовать синтаксис вызова функции применительно к объекту класса (имя объекта с круглыми скобками). Количество операндов в скобках может быть любым. Переопределение операции [ ] позволяет использовать синтаксис элемента массива (имя объекта с квадратными скобками).
//------------------------------------------------------bk73-09.cpp
//------Переопределение операций [] и ()
#include <string.h>
class string // Строка переменной длины
{
char *Str; // Динамический массив символов
int size; // Длина строки
public:
string operator()(int,int); // Операция выделения подстроки
char operator[](int); // Операция выделения символа
int operator[](char*); // Операция поиска подстроки
};
//------ Операция выделения подстроки -------------------
string string::operator()(int n1, int n2)
{
string tmp = *this;
delete tmp.Str;
tmp.Str = new char[n2-n1+1];
strncpy(tmp.Str, Str+n1, n2-n1);
}